package cn.tedu.article.dao.repository;

import cn.tedu.article.pojo.param.*;
import cn.tedu.article.pojo.vo.ArticleVO;
import cn.tedu.article.pojo.vo.CategoryVO;
import cn.tedu.article.pojo.vo.RecordVO;
import cn.tedu.article.pojo.vo.TagVO;

import java.util.List;

public interface ArticleRepository {
    ArticleVO saveArticle(ArticleSaveParam articleSaveParam);

    void deleteArticle(Long articleId);

    ArticleVO selectArticleById(Long articleId, Long userId);

    List<ArticleVO> selectArticleByUserId(Long userId);

    List<ArticleVO> selectArticleByArticleQueryParam(ArticleQueryParam articleQueryParam);

    List<TagVO> selectArticleTags(ArticleTagQueryParam articleTagQueryParam);

    List<CategoryVO> selectArticleCategory(ArticleCategoryQueryParam articleCategoryQueryParam);

    void articleOnLike(Integer articleId,Integer userId);

    void articleOnFavorite(Integer articleId,Integer userId);

    void articleCancelLike(Integer articleId,Integer userId);

    void articleCancelFavorite(Integer articleId,Integer userId);

    void articleVisit(Integer articleId);

    void saveAiRecord(AiRecordSaveParam aiRecordSaveParam);

    List<RecordVO> selectAiRecord (Long userId);

    void changeStatus(AiRecordSaveParam aiRecordSaveParam);
}
